package com.huanxing.cloud.pay.api.handler;

import com.huanxing.cloud.common.core.entity.Result;
import com.huanxing.cloud.pay.common.dto.CreateOrderRequest;
import com.huanxing.cloud.pay.common.entity.PayTradeOrder;
import lombok.extern.slf4j.Slf4j;

/**
 * 支付抽象类
 *
 * @author lijx
 * @since 2023/4/18 19:11
 */
@Slf4j
public abstract class AbstractPayOrderHandler implements PayOrderHandler {

	@Override
	public Result pay(CreateOrderRequest createOrderRequest) {
		// 参数检查
		validateRequest(createOrderRequest);
		// 创建订单
		PayTradeOrder payTradeOrder = createOrder(createOrderRequest);
		// 支付逻辑
		Result result = doPay(payTradeOrder);
		// 后置处理
		postPay(payTradeOrder);
		return result;
	}

	public abstract Result doPay(PayTradeOrder payTradeOrder);

	private void validateRequest(CreateOrderRequest createOrderRequest) {
		// 参数检查
	}

	private void postPay(PayTradeOrder payTradeOrder) {
		// 后置处理
	}

}
